package com.bytezero.override;
/*
 * 方法的重新（override/overwrite）
 * 
 * 1.重写：子类继承父类以后，可以对父类中同名同参数的方法，进行覆盖操作
 * 
 * 2.重写以后，创建子类对象以后，通过子类对象调用父类中的同名同参数的方法时，
 * 实际执行的是子类重写父类的方法
 * 
 * 3.重写的规定：
 *           方法的声明：权限修饰符 返回值类型  方法名 thiows(异常的类型)（形参列表）
 *           {
 *           	 //方法体
 *           }
 *           
 *           子类中的叫重写的方法
 *           父类中的叫被重写的方法
 *    (1)子类重写的方法的方法名和形参列表与父类被重写的方法名和形参列表相同
 *    (2)子类重写的方法的权限修饰符 不小于 父类被重写的方法权限修饰符（也可以相等）
 *       >特殊情况：子类不能重写父类中声明为 private 权限的方法
 * 
 *    (3)返回值类型  
 *         父类被重写的方法的返回值类型是 void,则子类重写的方法的返回值类型 只能是 void
 *         父类被重写的方法的返回值类型是 A 类型，则子类重写的方法的返回值类型可以是A类，
 *     或A类的子类
 *         父类被重写的方法的返回值类型是 基本数据类型（double），则子类重写的方法的返回值类型必须
 *     是相同的基本数据类型(double)
 *          
 *         异常方面：子类重写的方法抛出异常类型(Runtime) 不大于 父类被重写的方法抛出异常类型（Exception） 
 * 
 * ************************************************************************************************
 *        子类和父类中的同名同参的方法 要么都声明为非static的（考虑重写），要么都声明为 static的（不是重写）
 *     static不能被重写   .
 *         
 * 

 * 面试题：区分方法的重载与重写
 *         
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 */



public class PersonTest 
{
	public static void main(String[] args) 
	{
		Student s = new Student("计算机科学与技术");
		
		s.eat();             //重写以后调用自己的
		s.walk(100);         //父类的
		
		System.out.println("*************************");
		
	   // s.major ="语文";      //自己的
		s.study();     
		
		Person p1 = new Person();
		p1.eat();           //调用自己的eat() 方法
	}
}


























